package com.sunfeng.netty.atguigu2.nio;

import lombok.extern.slf4j.Slf4j;

import java.nio.IntBuffer;

/**
 * 1) 在 NIO 中， Buffer 是一个顶层父类， 它是一个抽象类,
 * 其子类有ByteBuffer,ShortBuffer,IntBuffer,LongBuffer,FloatBuffer,DoubleBuffer,CharBuffer
 * 2) Buffer 类定义了所有的缓冲区都具有的四个属性来提供关于其所包含的数据元素的信息
 *  capacity 容量，即可以容纳的最大数据量，在缓冲区创建时被设定并且不能改变
 *  Limit 标识缓冲区的当前终点，不能对缓冲区超过的极限位置进行读写操作，且极限位置是可以修改的
 *  position 位置，下一个要被读或者写的元素的索引，每次读写缓冲区数据时都会改变其值，为下次读写做准备
 *  mark 标记
 * @author sunfeng
 * @date 2021/03/22 10:40
 **/
@Slf4j
public class BufferDemo01 {
    public static void main(String[] args) {

        //举例说明 Buffer 的使用 (简单说明)
        //创建一个 Buffer, 大小为 5, 即可以存放 5 个 int
        IntBuffer intBuffer = IntBuffer.allocate(5);
        for(int i = 0; i < intBuffer.capacity()-1; i++) {
            intBuffer.put( i * 2);
        }
        // buffer 原先中数据不会被清除

        intBuffer.flip();
        while (intBuffer.hasRemaining()){
            log.info("获取到的数据为:{}",intBuffer.get());
        }

    }
}
